"""
## KNN_鸢尾花
# 1.导入工具包
# 2.加载数据集
# 2.1 加载数据集
# 2.2 展示数据集
# 3.特征工程(预处理-标准化)
# 3.1 数据集划分
# 3.2 标准化
# 4.模型训练
# 4.1 实例化
# 4.2 调用fit法
# 5.模型预测
# 6.模型评估(准确率)
# 6.1 直接计算准确率
# 6.2 使用预测结果

"""

# 1.导入工具包
from sklearn.datasets import load_iris
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score


# 2.加载数据集
# 2.1 加载鸢尾花数据集
iris_data = load_iris()
# 打印整个数据集对象，查看基本信息
print(iris_data)
# 打印数据集的键名，了解数据集的结构
print(iris_data.keys())
# 打印目标变量(标签)，查看分类标签的分布情况
# 0代表Setosa，1代表Versicolor，2代表Virginica
print(iris_data.target)


# 2.2 展示数据集
# 转换为DataFrame
# 为什么两种方式都可以？
# sklearn.datasets.load_iris() 返回的是一个 Bunch 对象（类似字典的对象），它支持两种访问方式：
#   属性访问：object.attribute
#   字典访问：object['key']
#  推荐使用点号访问（更简洁、更常见）
# iris_df = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)
iris_df = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)
# iris_df = pd.DataFrame(iris_data['data'], columns=iris_data.feature_names)
iris_df['target'] = iris_data.target
print(iris_df)
# 使用seaborn的lmplot函数绘制散点图并拟合回归线
# x轴为萼片长度，y轴为萼片宽度
# data参数指定数据源为iris_df
# hue参数按照'label'列进行分组着色，直观展示不同品种的分布
# 这个可视化有助于观察不同鸢尾花品种在萼片特征上的分布模式和线性关系
sns.lmplot(x='sepal length (cm)', y='sepal width (cm)', data=iris_df, hue='target')
plt.show()